package com.neusoft.cmsprojects.util;

import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;

public class TmFunctions {
	
	public static boolean isEmpty(String content){
		return StringUtils.isEmpty(content);
	}
	
	public static String subString(String name){
		String st=name;
		String st1=null;
		if(st.length()<13){
			return st;
		}else{
			st1=st.substring(0, 13);
			st1=st1+"<br>"+st.substring(13,name.length());
			return st1;
		}
	}
	
	/**
	 * 计算借的书籍是否超期，超期多少天
	 * 方法名：overDue<BR>
	 * 创建人：xyd <BR>
	 * 时间：2014年12月6日-下午12:18:11 <BR>
	 * @param date
	 * @return
	 * @throws ParseException String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	public static String overDue(String date) throws ParseException {
		DateFormat format=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		Date date1=new Date();
		
		Date date2=format.parse(dateFormat(date, "yyyy-MM-dd hh:mm:ss"));
		Date date3=format.parse(formatDate(date1, "yyyy-MM-dd hh:mm:ss"));
		//计算相差日期
		long daysBetween=(date3.getTime()-date2.getTime()+1000000)/(3600*24*1000);
		if(daysBetween<=0){
			if((-daysBetween<7)){
			return "还有"+(-daysBetween)+"天超期";
			}
			else{
				return "未超期";
			}
		}else{
			return "<p style='color:red;'>"+"已超期"+daysBetween+"天</p>";
		}
		
	}
	
	
	/**
	 * 处理性别方法
	 * 方法名：sex<BR>
	 * 创建人：潭州学院-keke <BR>
	 * 时间：2014年10月19日-下午10:13:48 <BR>
	 * @param male
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	public static String sex(int male){
		String result = null;
		if(male==1){
			result = "男";
		}else if(male==0){
			result = "女";
		}else if(male==2){
			result = "保密";
		}
		return result;
	}
	
	/**
	 * 格式化日期
	 * 方法名：formatDate<BR>
	 * 创建人：潭州学院-keke <BR>
	 * 时间：2014年10月19日-下午10:21:28 <BR>
	 * @param date
	 * @param pattern
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	public static String formatDate(Date date,String pattern){
		if(pattern==null || pattern.equals(""))pattern = "yyyy-MM-dd HH:mm:ss";
		java.text.SimpleDateFormat format = new SimpleDateFormat(pattern);
		return format.format(date);
	}
	/**
	 * 将字符转换成大写
	 * (这里用一句话描述这个方法的作用)<BR>
	 * 方法名：toUpper<BR>
	 * 创建人：xyd <BR>
	 * 时间：2014年11月23日-下午9:33:45 <BR>
	 * @param content
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	public static String toUpper(String content){
		if(StringUtils.isEmpty(content)) return null;
		return content.toUpperCase();
	}
	/**
	 * 检查图书的状态
	 * 方法名：checkStatus<BR>
	 * 创建人：xyd <BR>
	 * 时间：2014年12月5日-下午3:11:36 <BR>
	 * @param num
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	public static String checkStatus(int num){
		String status="";
		if(num==0){
			status="再借";
		}else if(num==1){
			status="空闲";
		}else if(num==2){
			status="遗失";
		}else{
			status="不可用";
		}
		return status;
	}
	
	/**
	 * 将字符转换成小写
	 * (这里用一句话描述这个方法的作用)<BR>
	 * 方法名：toLower<BR>
	 * 创建人：xyd <BR>
	 * 时间：2014年11月23日-下午9:36:10 <BR>
	 * @param content
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	public static String toLower(String content){
		if(StringUtils.isEmpty(content)) return null;
		return content.toLowerCase();
	}
	/**
	 * 格式化日期自定义函数
	 * (这里用一句话描述这个方法的作用)<BR>
	 * 方法名：dateFormat<BR>
	 * 创建人：xyd <BR>
	 * 时间：2014年11月23日-下午10:43:59 <BR>
	 * @param dateString 日期
	 * @param format   格式
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 * System.out.println(dateFormat("2014-11-23 12:12:12", "yyyy"));获取年份
	 * System.out.println(dateFormat("2014-11-23 12:12:12", "MM"));获取月份
	 * System.out.println(dateFormat("2014-11-23 12:12:12", "dd"));获取日
	 * System.out.println(dateFormat("2014-11-23 12:12:12", "HH:mm:ss"));24小时制 获取时分秒
	 * System.out.println(dateFormat("2014-11-23 12:12:12", "hh:mm:ss"));12小时制 获取时分秒
	 * System.out.println(dateFormat("2014-11-23 12:12:12", "yyyy/MM/dd"));获取年月日
	 */
	public static String dateFormat(String dateString,String format){
		if(StringUtils.isEmpty(dateString)) return "";
		try {
			Date date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateString);
			String ds=new SimpleDateFormat(format).format(date);
			return ds;
		} catch (ParseException e) {
			e.printStackTrace();
			return "";
		}
		
	}
	
	/**
	 * 星期的转换
	 * (这里用一句话描述这个方法的作用)<BR>
	 * 方法名：getWeekChinesee<BR>
	 * 创建人：xyd <BR>
	 * 时间：2014年11月29日-下午9:52:02 <BR>
	 * @param week
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	public static String getWeekChinesee(int week){
		String cweek = "";
		if(week==1)cweek = "一";
		if(week==2)cweek = "二";
		if(week==3)cweek = "三";
		if(week==4)cweek = "四";
		if(week==5)cweek = "五";
		if(week==6)cweek = "六";
		if(week==7)cweek = "日";
		return cweek;
	}
	
	/**
	 * 把数字变成大写字母
	 * 方法名：getCharacter<BR>
	 * 创建人：xyd <BR>
	 * 时间：2014年11月29日-下午9:52:36 <BR>
	 * @param num
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	public static String getCharacter(int num){
		String cweek = "";
		if(num==1)cweek = "A";
		if(num==2)cweek = "B";
		if(num==3)cweek = "C";
		if(num==4)cweek = "D";
		if(num==5)cweek = "E";
		if(num==6)cweek = "F";
		if(num==7)cweek = "G";
		if(num==8)cweek = "H";
		if(num==9)cweek = "I";
		if(num==10)cweek = "J";
		if(num==11)cweek = "K";
		if(num==12)cweek = "M";
		if(num==13)cweek = "L";
		if(num==14)cweek = "N";
		if(num==15)cweek = "O";
		if(num==16)cweek = "P";
		if(num==17)cweek = "Q";
		if(num==18)cweek = "R";
		if(num==19)cweek = "S";
		if(num==20)cweek = "T";
		if(num==21)cweek = "U";
		if(num==22)cweek = "V";
		if(num==23)cweek = "W";
		if(num==24)cweek = "X";
		if(num==25)cweek = "Y";
		if(num==26)cweek = "Z";
		return cweek;
	}
	
	/**
	 * 日期具体的几秒钟以前
	 * 方法名：dateString<BR>
	 * 时间：2014年11月11日-下午10:34:33 <BR>
	 * @param startTime
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	public static String dateToString(String startTime){
		return TmDateUtil.getTimeFormat(startTime);
	}
	
	/**
	 *  日期具体的几秒钟以前
	 * 方法名：dateToString2<BR>
	 * 时间：2014年11月11日-下午10:38:06 <BR>
	 * @param startTime
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	public static String dateToString2(Date startTime){
		return TmDateUtil.getTimeFormat(startTime);
	}
	
	
	/**
	 * 将数字转换成对应的中文
	 * 方法名：intToChnNumConverter<BR>
	 * 时间：2014年11月11日-下午10:33:30 <BR>
	 * @param num
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	public static String intToChnNumConverter(int num){
	    String resultNumber = null;
	    if(num > 10000 || num < 0){
	        return "";
	    }
	    HashMap chnNumbers = new HashMap();
	    chnNumbers.put(0, "零");
	    chnNumbers.put(1, "一");
	    chnNumbers.put(2, "二");
	    chnNumbers.put(3, "三");
	    chnNumbers.put(4, "四");
	    chnNumbers.put(5, "五");
	    chnNumbers.put(6, "六");
	    chnNumbers.put(7, "七");
	    chnNumbers.put(8, "八");
	    chnNumbers.put(9, "九");
	 
	    HashMap unitMap = new HashMap();
	    unitMap.put(1, "");
	    unitMap.put(10, "十");
	    unitMap.put(100, "百");
	    unitMap.put(1000, "千");
	    int[] unitArray = {1000, 100, 10, 1};
	 
	    StringBuilder result = new StringBuilder();
	    int i = 0;
	    while(num > 0){
	        int n1 = num / unitArray[i];
	        if(n1 > 0){
	            result.append(chnNumbers.get(n1)).append(unitMap.get(unitArray[i]));
	        }
	        if(n1 == 0){
	            if(result.lastIndexOf("零") != result.length()-1){
	                result.append("零");
	            }
	        }
	        num = num % unitArray[i++];
	        if(num == 0){
	            break;
	        }
	    }
	    resultNumber = result.toString();
	    if(resultNumber.startsWith("零")){
	        resultNumber = resultNumber.substring(1);
	    }
	    if(resultNumber.startsWith("一十")){
	        resultNumber = resultNumber.substring(1);
	    }
	    return resultNumber;
	}
	
	/**
	 * 
	 * 方法名：cutContent<BR>
	 * 时间：2014年11月14日-上午12:27:16 <BR>
	 * @param content
	 * @param begin
	 * @param end
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	public static String cutContent(String content,int begin,int end){
		if(StringUtils.isEmpty(content))return "";
		String start = "";
		String result = "";
		if(content.length() > end){
			start = content.substring(begin,end);
			result = "<span style='display:none;'>"+content.substring(100,content.length())+"</span>";
			return start+result+"&nbsp;&nbsp;<a onclick='tm_show_expand(this)' href='javascript:void(0)'>展开</a>";
		}else{
			return content;
		}
	}
	
	/**
	 * 计算上传文件的大小
	 * 方法名：countFileSize<BR>
	 * 创建人：xyd <BR>
	 * 时间：2014年11月29日-下午9:53:31 <BR>
	 * @param fileSize
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	public static String countFileSize(long fileSize) {
		String fileSizeString = "";
		try {
			DecimalFormat df = new DecimalFormat("#.00");
			long fileS = fileSize;
			if (fileS == 0) {
				fileSizeString = "0KB";
			} else if (fileS < 1024) {
				fileSizeString = df.format((double) fileS) + "B";
			} else if (fileS < 1048576) {
				fileSizeString = df.format((double) fileS / 1024) + "KB";
			} else if (fileS < 1073741824) {
				fileSizeString = df
						.format(((double) fileS / 1024 / 1024) - 0.01)
						+ "MB";
			} else {
				fileSizeString = df.format((double) fileS / 1024 / 1024 / 1024)
						+ "G";
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return fileSizeString;
	}
	/**
	 * 判断用户级别
	 * 方法名：checkLimits<BR>
	 * 创建人：许耀东 <BR>
	 * 时间：2014年12月18日-上午11:34:43 <BR>
	 * @param j
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	public static String checkLimits(int j){
		if(j==1){
			return "超级管理员";
		}else{
			return "普通用户";
		}
		
	}
}